<!--********************************************************************
* Copyright© 2000 - 2025 SuperMap Software Co.Ltd. All rights reserved.
*********************************************************************-->
<!--********************************************************************
* 该示例需要引入 
* Echarts (https://github.com/apache/echarts)
*********************************************************************-->
<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <title data-i18n="resources.title_summaryAttributesJobService"></title>
    <style>
        .mb-popup {
            position: absolute;
            top: 10px;
            right: 10px;
        }

        .mb-echarts {
            position: absolute;
            top: 30px;
            left: 10px;
            width: 400px;
            height: 300px;
        }
    </style>
</head>

<body style=" margin: 0;overflow: hidden;background: #fff;width: 100%;height:100%;position: absolute;top: 0;">
    <div id="map" style="width: 100%;height:100%"></div>
    <div id="popup" class="mb-popup" style='width:350px'>
        <div class="panel panel-default">
            <div class='panel-heading'>
                <h3 class='panel-title' data-i18n="resources.title_summaryAttributesJobService"></h3>
            </div>
            <div class='panel-body'>
                <div class='input-group'>
                    <span class='input-group-addon'><span data-i18n="resources.text_inputData"></span><span data-i18n="[title]resources.text_requiredField"
                            style="color: red;"> * </span>　</span>
                    <input id='datasetName' type='text' class='form-control' value='samples_processing_newyorkZone_R' />
                </div>
                <p></p>

                <div class='input-group'>
                    <span class='input-group-addon' data-i18n="resources.text_groupField"></span>
                    <input id='groupField' type='text' class='form-control' value='borough' />
                </div>
                <p></p>

                <div class='input-group'>
                    <span class='input-group-addon' data-i18n="resources.text_attributeField"></span>
                    <input id='attributeField' type='text' class='form-control' value='LocationID' />
                </div>
                <p></p>

                <div class='input-group'>
                    <span class='input-group-addon' data-i18n="resources.text_statisticModes"></span>
                    <input id='statisticModes' type='text' class='form-control' value='sum' />
                </div>
                <p></p>

                <div align='right'>
                    <input type='button' id='btn' class='btn btn-primary' data-i18n="[value]resources.btn_summary" />
                </div>
            </div>
        </div>
    </div>
    <div id="echarts" class="mb-echarts"></div>
    <script type="text/javascript" include="bootstrap,jquery,widgets" src="../js/include-web.js"></script>
    <script type="text/javascript" include="echarts" src="../../dist/maplibregl/include-maplibregl.js"></script>
    <script>
        var map,
            baseUrl = (window.isLocal ? window.server : "https://iserver.supermap.io") +
            "/iserver/services/map-world/rest/maps/World",
            mapUrl = baseUrl + "/zxyTileImage.png?z={z}&x={x}&y={y}",
            processingsUrl = (window.isLocal ? window.server : "https://iserver.supermap.io") +
            "/iserver/services/distributedanalyst/rest/v1/jobs";
        var attribution = "<a href='https://maplibre.org/' target='_blank'>© MapLibre </a>" +
            " with <span>© <a href='https://iclient.supermap.io' target='_blank'>SuperMap iClient</a> | </span>" +
            " Map Data <span>© <a href='http://support.supermap.com.cn/product/iServer.aspx' target='_blank'>SuperMap iServer</a></span> ";

        map = new maplibregl.Map({
            container: 'map',
            style: {
                "version": 8,
                "sources": {
                    "raster-tiles": {
                        "attribution": attribution,
                        "type": "raster",
                        "tiles": [mapUrl],
                        "tileSize": 256
                    }
                },
                "layers": [{
                    "id": "simple-tiles",
                    "type": "raster",
                    "source": "raster-tiles",
                }]
            },
            center: [-73.95, 40.75],
            zoom: 11
        });
        map.addControl(new maplibregl.NavigationControl(), 'top-left');
        map.addControl(new maplibregl.supermap.LogoControl({ link: "https://iclient.supermap.io" }), 'bottom-right');

        bindClick();

        maplibregl.supermap.SecurityManager.registerToken(processingsUrl, window.exampleToken);

        var processingService = new maplibregl.supermap.ProcessingService(processingsUrl, {
            withCredentials: window.isLocal
        });

        function bindClick() {
            $('#btn').on('click', function () {
                if ($('#msg_container')[0]) {
                    $('#msg_container').remove();
                }
                widgets.loader.showLoader();
                $("#echarts").html("");
                $("#echarts").hide();
                summaryAttributesJobs();
            });
        }

        function summaryAttributesJobs() {
            var summaryAttributesJobsParameter = new maplibregl.supermap.SummaryAttributesJobsParameter({
                datasetName: $('#datasetName').val(),
                groupField: $('#groupField').val(),
                attributeField: $('#attributeField').val(),
                statisticModes: $('#statisticModes').val()
            });
            processingService.addSummaryAttributesJob(summaryAttributesJobsParameter, function (serviceResult) {
                if (serviceResult.error) {
                    widgets.loader.removeLoader();
                    var errorMsg = serviceResult.error.errorMsg || "code: " + serviceResult.error;
                    widgets.alert.showAlert(resources.msg_createFailed + "<br>" + errorMsg, false);
                    return;
                }
                serviceResult.result.setting.serviceInfo.targetServiceInfos.map(function (info) {
                    if (info.serviceType === 'RESTDATA') {
                        var dataUrl = info.serviceAddress + '/data';
                        var sqlParam = new maplibregl.supermap.GetFeaturesBySQLParameters({
                            queryParameter: {
                                name: "analystResult@UntitledDatasource",
                                attributeFilter: "SMID > 0"
                            },
                            datasetNames: ["UntitledDatasource:analystResult"]
                        });
                        new maplibregl.supermap.FeatureService(dataUrl).getFeaturesBySQL(sqlParam).then(function (serviceResult) {
                                result = serviceResult.result.features.features;
                                var names = [];
                                var data1 = [];
                                var data2 = [];
                                for (var i = 0; i < result.length; i++) {
                                    names.push(result[i].properties.BOROUGH);
                                    data1.push(parseFloat(result[i].properties.RECORDCOUNT));
                                    data2.push(parseFloat(result[i].properties.SUM_LOCATIONID));
                                }
                                $("#echarts").show();
                                var ChartDom = document.createElement("div");
                                ChartDom.id = "piechart";
                                ChartDom.style.width = "400px";
                                ChartDom.style.height = "300px";
                                ChartDom.style.left = "10px";
                                ChartDom.style.top = "110px";
                                ChartDom.style.position = "absolute";
                                $("#echarts").append(ChartDom);
                                var chart = echarts.init(ChartDom);
                                option = {
                                    backgroundColor: '#0E2A43',
                                    legend: {
                                        bottom: 20,
                                        textStyle: {
                                            color: '#fff',
                                        },
                                        data: ['RECORDCOUNT', 'SUM_LOCATIONID']
                                    },
                                    grid: {
                                        left: '3%',
                                        right: '4%',
                                        bottom: '20%',
                                        containLabel: true
                                    },
                                    tooltip: {
                                        show: "true",
                                        trigger: 'axis',
                                        axisPointer: { // 坐标轴指示器，坐标轴触发有效
                                            type: 'shadow' // 默认为直线，可选为：'line' | 'shadow'
                                        }
                                    },
                                    xAxis: {
                                        type: 'value',
                                        axisTick: {
                                            show: false
                                        },
                                        axisLine: {
                                            show: false,
                                            lineStyle: {
                                                color: '#fff',
                                            }
                                        },
                                        splitLine: {
                                            show: false
                                        },
                                    },
                                    yAxis: [{
                                            type: 'category',
                                            data: names,
                                            axisTick: {
                                                show: false
                                            },
                                            axisLine: {
                                                show: true,
                                                lineStyle: {
                                                    color: '#fff',
                                                }
                                            }
                                        },
                                        {
                                            type: 'category',
                                            data: names,
                                            axisLine: {
                                                show: false
                                            },
                                            axisTick: {
                                                show: false
                                            },
                                            axisLabel: {
                                                show: false
                                            },
                                            splitArea: {
                                                show: false
                                            },
                                            splitLine: {
                                                show: false
                                            }
                                        }
                                    ],
                                    series: [{
                                            name: 'RECORDCOUNT',
                                            type: 'bar',
                                            itemStyle: {
                                                normal: {
                                                    show: true,
                                                    color: '#5de3e1',
                                                    barBorderRadius: 50,
                                                    borderWidth: 0,
                                                    borderColor: '#333',
                                                }
                                            },
                                            data: data1,
                                            barGap: '0%',
                                            barCategoryGap: '50%'
                                        },
                                        {
                                            name: 'SUM_LOCATIONID',
                                            type: 'bar',
                                            yAxisIndex: 1,
                                            itemStyle: {
                                                normal: {
                                                    show: true,
                                                    color: '#277ace',
                                                    barBorderRadius: 50,
                                                    borderWidth: 0,
                                                    borderColor: '#333',
                                                }
                                            },
                                            data: data2,
                                            barGap: '0%',
                                            barCategoryGap: '50%'
                                        }
                                    ]
                                };
                                chart.setOption(option);
                            });
                        widgets.loader.removeLoader();
                    }
                });
            });
        }
    </script>

</body>

</html>